AskUserQuestion:Claude Code における要件獲得のための対話インタフェース
(ChatGPTにより生成,検証前)
1. 背景
Agentic Codingには、(1) ユーザーの意図が不明確なまま進めると手戻りが増える一方で、(2) あらゆる判断を逐一ユーザーへ委ねると作業が停滞する、という問題があります。
この問題を解決するために考案された機能が、作業の途中で曖昧点を解消するためにユーザーへ確認質問を提示するツールである AskUserQuestionです。
2. AskUserQuestion の機能的目的
AskUserQuestion の狙いは、単なる追加質問ではなく、要件定義や意思決定の分岐点において「不確実性を最小化する情報」を短時間で得ることにあります。
公式説明では、Plan Mode(読み取り専用の分析に基づいて計画を作るモード)において、計画提示の前に AskUserQuestion を使って要件を収集し、目標を明確化すると明示されています。
また、ベストプラクティスとして「最小限のプロンプトから開始し、AskUserQuestion を用いたインタビューで仕様を詰める」運用が推奨されています。
3. 「承認(approval)」との関係と実行制御
AskUserQuestion は、危険な操作(ファイル削除、コマンド実行など)で要求される「ツール使用許可(approval)」とは別枠で、確認質問として扱われます。
4. 制限事項と設計上のトレードオフ
公式ドキュメントの “Limitations” では、AskUserQuestion が Task ツールで起動したサブエージェント(subagent)内では利用できない、と明記されています。
5. 結論
AskUserQuestion は、Claude Code/Agent SDK において、要件獲得と曖昧性解消を“エージェントの道具立て”として組み込むための中核的ツールです。
Plan Mode で計画提示の前に目標を明確化する用途や、ベストプラクティスとしての「Claudeにインタビューさせる」運用が示すように、単なる補助的UIではなく、仕様形成を前進させるためのプロトコルとして設計されています。
一方で、サブエージェント内では使えないなどの制約もあるため、複雑なタスク分割を行う設計ではどの地点でプランを確定させるかを前倒しで設計する必要があります。